package com.lgc.webtest.service.impl;

import com.alibaba.excel.EasyExcel;
import com.lgc.webtest.dao.ImportExcelDao;
import com.lgc.webtest.entity.dto.excel.TempleteDTO;
import com.lgc.webtest.listener.ImportExcelListener;
import com.lgc.webtest.service.ExcelService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@Slf4j
@Service
public class ExcelServiceImpl implements ExcelService {
    @Autowired
    private ImportExcelDao importExcelDao;

    @Override
    public Map<String,String> importExcel(MultipartFile file, String userId) {
        Map<String,String> result = new HashMap<>();

        try {


            //可以进行必传参数校验等
            //这里省略不写了

            //导入示例：excel名称：小小鱼儿小小林_浙江201912.xlsx
            String fileName = file.getOriginalFilename().replaceAll("\\.xlsx|\\.xls","");
            System.out.println("file.getName():"+file.getName()+",file.getOriginalFilename():"+file.getOriginalFilename());
            // 将excel表中的数据入库
            // 有个很重要的点 xxxxxListener 不能被spring管理，要每次读取excel都要new,然后里面用到spring可以构造方法传进去
            // 这里 需要指定读用哪个class去读，默认读取第一个sheet 文件流会自动关闭
            EasyExcel.read(file.getInputStream(), TempleteDTO.class, new ImportExcelListener(importExcelDao)).sheet().doRead();

            result.put("left","导入成功");
        }catch (IOException i){
            i.printStackTrace();
            result.put("left","IOException，请重试");
        } catch (Exception e){
            e.printStackTrace();
            result.put("left","导入异常，请重试");
        }

        return result;
    }

}
